
#include "scripting.h"
#include "ai_agent.h"
#include "neural_net_genetic.h"

using namespace WtfEngine;
using namespace boost::python;

BOOST_PYTHON_MODULE(WtfAi) {

	class_<Behaviour, Behaviour::tCacheRef, bases<WtfEngine::IDataObject> >("Behaviour", init<const String&>())
	;
	implicitly_convertible<Behaviour::tCacheRef, WtfEngine::IDataObject::tCacheRef>();

	class_<AiModel, AiModel::tCacheRef>("AiModel", init<const String&>())
	;




	/**** Neural Networks ****/

	class_<GeneticNeuralNetwork, GeneticNeuralNetwork::tRef, bases<WtfEngine::IDataObject> >("GeneticNeuralNetwork",
		init< const String&, unsigned, const std::vector<unsigned>&, const std::vector<unsigned>& >())
		.def("ProcessInputs", &GeneticNeuralNetwork::ProcessInputs)
		.def("ReadOutputs", &GeneticNeuralNetwork::ReadOutputs)
		.def("Mutate", &GeneticNeuralNetwork::Mutate)
		.def("Randomize", &GeneticNeuralNetwork::Randomize)
		.def("SaveToFile", &GeneticNeuralNetwork::SaveToFile)
		.def("Clone", &GeneticNeuralNetwork::Clone)
		.def("BackPropagate", &GeneticNeuralNetwork::BackPropagate)
	;
	DECL_CACHE_REF("GeneticNeuralNetworkRef", GeneticNeuralNetwork, WtfEngine::IDataObject);
};

